#ifndef  __UUID_DIALOG_H__
#define  __UUID_DIALOG_H__

#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/choice.h>
#include <wx/sizer.h>
#include <wx/button.h>
#include <wx/dialog.h>

#include <boost/uuid/uuid.hpp>

class UUIDDialog : public wxDialog
{
public:

	UUIDDialog( wxWindow* parent = NULL, wxWindowID id = wxID_ANY, const wxString& title = wxT("UUID Generator"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 420,210 ), long style = wxDEFAULT_DIALOG_STYLE );
	~UUIDDialog();

private:
	wxStaticText* m_FormattingLabel;
	wxChoice* m_FormattingChoice;
	wxCheckBox* m_AllCaps;
	wxStaticText* m_UUIDPreview;
	wxButton* m_btnGenerate;
	wxButton* m_btnCopy;
	wxButton* m_btnClose;
	wxString m_currentUUID;

	boost::uuids::uuid m_uuid;

	void GenerateUUID();
	void FormatUUID();
	void UpdateUUID();

	void OnFormatChanged( wxCommandEvent& event );
	void OnAllCapsToggled( wxCommandEvent& event );
	void OnClickGenerate( wxCommandEvent& event );
	void OnClickCopy( wxCommandEvent& event );
	void OnClickClose( wxCommandEvent& event );
};

#endif // __UUID_DIALOG_H__
